Before an application or service can be deployed for use, the application or service must first be developed. Development is an iterative process in which code is written, compiled, packaged, and deployed to an application server numerous times before a usable product emerges. A conventional application server expects components of the package to appear in specific locations of the package. However, these specific locations do not generally correspond to locations at which they are placed during development (e.g., in a project directory structure).
To ensure that components of the application appear in the appropriate locations, once a version of code is written and compiled, it is then packaged. Packaging copies the components of the application from a project directory structure to appropriate locations in a package directory structure. Conventional packaging is performed upon a user command to generate a package after a version of the code is ready for testing. Such conventional packaging copies the contents of the entire project directory structure into a package directory structure. Such conventional packaging also generally requires a programmer to write a script or other automated process that moves files from the project directory structure to the package directory structure. The script identifies where in the package directory structure to place each file from the project directory structure. Once packaging is complete, the package can be deployed to an application server, and tested.
Testing generally reveals multiple flaws or bugs in the application that need to be fixed. After the flaws are fixed, the programmer again initiates packaging, and again deploys the package to the application server. This process is repeated until the application is sufficiently free from flaws.
Some conventional development tools provide incremental project building. Incremental project building recompiles code of a project as the code is written. Incremental project building operates at a code level, recompiling code for an individual file as the code is written. However, an application or service generally includes multiple files. Incremental project builders do not operate at a file level. Therefore, when a programmer wishes to deploy an application, he must still manually generate a package for deployment.